package model;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import entity.Poker;
import entity.Suit;

public class VictoryModel {
	private int count=0;//计数器变量
	private int width;//宽度
	private int height;//高度
	private int cardHeight;//卡片高度
	private List<VictoryPoker> pokers;//存储扑克
	/**
	 * 
	 * @param width 画面宽度
	 * @param height 画面高度
	 */
	public VictoryModel(int width,int height,int cardHeight) {
		// TODO Auto-generated constructor stub
		this.width=width;
		this.height=height;
		this.cardHeight=cardHeight;
		pokers=new ArrayList<>();
		getRandomPokers(6);
	}
	public void updateParams(int width,int height,int cardHeight){
		this.width=width;
		this.height=height;
		this.cardHeight=cardHeight;
	}
	/**生成数量为n的扑克
	 * 
	 * @param n
	 */
	public void getRandomPokers(int n){
		Random random=new Random();//随机数生成
		for(int i=0;i<n;i++){	//生成n张牌
			int split=width/n;	//获取间隔
			int x=random.nextInt(split)+split*i;	//计算横坐标
			Suit s=Suit.values()[random.nextInt(4)];	//计算花色
			int num=random.nextInt(13)+1;	//计算点数
			pokers.add(new VictoryPoker(new Poker(num, s), x, -cardHeight));//增加一张扑克
		}
	}
	/**将所有扑克下移
	 * 
	 */
	public void movePokers(int dy){
		for(int i=0;i<pokers.size();i++){	//遍历所有扑克	
			VictoryPoker poker=pokers.get(i);
			if(poker.y>height)	//如果超出界限
				pokers.remove(poker);	//移除扑克
			else
				poker.moveY(dy);	//将扑克下移dy
		}
		count++;//计数器增加
	}
	/**获取随机扑克
	 * 
	 * @return
	 */
	public List<VictoryPoker> getPokers(){
		if(count>10){	//如果计数器大于10
			getRandomPokers(6);
			count=0;	//计数器清零
		}else{
			movePokers(5);	//移动扑克
		}
		List<VictoryPoker> pokerList=new ArrayList<>();
		for(int i=0;i<pokers.size();i++)
			pokerList.add(pokers.get(i));
		return pokerList;	//返回随机扑克列表
	}
}
